iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
Mobile Development

Android與Spring Boot開發學習之旅系列 第 17

開發學習之旅 Day17 - Spring Boot三層式架構

  • 分享至 

  • xImage
  •  

三層式架構在開發中具有許多優點,有助於實現模塊化,提高可維護性、重用性與安全性等,使開發者更容易管理、測試和擴展應用程序。三層式架構模式分為三個主要層次:

  • 表示層(Presentation Layer)
    • 負責處理應用程序與用戶互動部分。
    • Controller:
      • 處理來自客戶端的HTTP請求並協調其他組件來執行相應的操作。
      • 返回HTML、JSON 或其他格式的響應。
  • 應用層(Service Layer)
    • 負責實現業務邏輯。
    • Service:
      • 調用資料訪問層來操作數據。
  • 數據存取層(Data Access Layer)
    • 負責處理數據的存取、操作和管理。
    • Spring Data JPA:
      • 簡化與資料庫的交互。
      • 定義數據庫操作的方法,例如查詢、新增、更新和刪除。

建立Entity類(HelloEntity)

  • 用於映射到資料庫中的資料表。
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "_hello")
public class HelloEntity {
    @Id
    @GeneratedValue
    private Long id;
    private String title;
    private String message;
}

建立Controller類(HelloController)

  • Spring Boot應用程序中的控制器類別,通過HTTP請求處理相關的操作。
@RestController
@RequiredArgsConstructor
@RequestMapping("/api")
public class HelloController {

    private final HelloService service;

    @PostMapping("/hello")
    @Operation(summary = "新增Hello資料")
    public ResponseEntity<?> addHello(
            @RequestParam("title") String title,
            @RequestParam("message")String message
    ) {
        return ResponseEntity.ok(service.addHello(title,message));
    }

    @GetMapping("/hello")
    public List<HelloEntity> getAllHello(){
        return service.getAllHello();
    }

}

建立Service類(HelloService)

  • 用於處理相關的業務邏輯。
@Service
@AllArgsConstructor
public class HelloService {

    private final HelloRepository helloRepository;

    public Map<String, Object> addHello(String title, String messge) {
        var response = new LinkedHashMap<String, Object>();
        var helloData = HelloEntity
                .builder()
                .title(title)
                .message(messge)
                .build();
        helloRepository.save(helloData);
        response.put("status", "0");
        return response;
    }

    public List<HelloEntity> getAllHello() {
        var HelloList = helloRepository.findAllHello();
        return HelloList;
    }

}

建立Repository類(HelloRepository)

  • 用於對實體(HelloEntity)進行資料庫操作。
@Repository
public interface HelloRepository extends JpaRepository<HelloEntity, Long> {
    @Query("SELECT h FROM HelloEntity h")
    List<HelloEntity> findAllHello();
}

上一篇
開發學習之旅 Day16 - 使用 JSON Web Token 進行身份驗證(三)
下一篇
開發學習之旅 Day18 - 實現登入和註冊功能
系列文
Android與Spring Boot開發學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言